package net.oschina.victor.service;

import java.util.Set;

import net.oschina.victor.entity.User;

/**
 * 系统用户信息管理
 * 
 * @author 刘源
 *
 */
public interface UserService {
	/**
	 * 修改用户密码
	 * 
	 * @param userId
	 * @param newPassword
	 */
	void changePassword(Long userId, String newPassword);

	/**
	 * 删除用户信息
	 * 
	 * @param userId
	 */
	void deleteUser(Long userId);

	/**
	 * 查询一个用户
	 * 
	 * @param userId
	 * @return
	 */
	User findById(Long userId);

	/**
	 * 根据用户名查找用户
	 * 
	 * @param username
	 * @return
	 * @throws Exception
	 */
	User findByUsername(String username) throws Exception;

	/**
	 * 根据用户名查找其权限
	 * 
	 * @param username
	 * @return
	 * @throws Exception
	 */
	Set<String> findPermissions(String username) throws Exception;

	/**
	 * 根据用户名查找其角色
	 * 
	 * @param username
	 * @return
	 * @throws Exception
	 */
	Set<String> findRoles(String username) throws Exception;

	/**
	 * 保存用户信息
	 * 
	 * @param user
	 * @throws Exception
	 */
	void saveUser(User user) throws Exception;
}
